1. Technical Field
This disclosure generally relates to content management systems, and more specifically relates to a content management system for computer software that maintains traceability between code and design documents.
2. Background Art
A content management system (CMS) allows many users to efficiently share electronic content such as text, audio files, video files, pictures, graphics, etc. Content management systems typically control access to content in a repository. A user may generate content, and when the content is checked into the repository, the content is checked by the CMS to make sure the content conforms to predefined rules. A user may also check out content from the repository, or link to content in the repository while generating content. The rules in a CMS assure that content to be checked in or linked to meets desired criteria specified in the rules.
Known content management systems check their rules when content is being checked in. If the rule is satisfied, the content is checked into the repository. If the rule is not satisfied, the content is not checked into the repository. Known content management systems may include rules related to bursting, linking, and synchronization. Bursting rules govern how a document is bursted, or broken into individual chunks, when the document is checked into the repository. By bursting a document into chunks, the individual chunks may be potentially reused later by a different author. Linking rules govern what content in a repository a user may link to in a document that will be subsequently checked into the repository. Synchronization rules govern synchronization between content and metadata related to the content. For example, a synchronization rule may specify that whenever a specified CMS attribute is changed, a particular piece of XML in the content should be automatically updated with that attribute's value.
Specialized content management systems may be used for the development of computer software in a highly-regulated environment where traceability of changes is critical. For example, in the pharmaceutical industry, FDA regulations require that changes to computer software be traceable, i.e., well-documented. In many modern software development environments, there are design documents and there is code that is separate from the design documents. The design documents are human-readable documents that provide a description of the design of the code. The code is more cryptic, typically in a high level computer language, and implements the functions described in the corresponding design document. Thus, there is a direct relationship between a design document and the code corresponding to the design document.
Potential problems may arise in a highly-regulated environment if changes to a design document are not properly reflected in the code, or if changes to the code are not properly reflected in the design document. Known systems require a programmer to remember that changes to one affect the other, and rely upon the programmer to maintain the correlation between the two. If a programmer makes a change to either the code or the design document, and forgets to make the corresponding change to the other, the code and design document will now be inconsistent with each other. As a result, if an audit is performed to determine whether the code and design document are consistent, the inconsistencies between the two will be discovered.
Because known content management systems for computer software rely upon human programmers to remember to make appropriate changes to both code and corresponding design documents, these content management systems are prone to human errors. Without a way to automate the process of keeping the code and related design document(s) consistent with each other, known content management systems will continue to suffer from human errors when programmers make the mistake of changing either the code or the design document without reflecting the change in the other.